A database is a collection of logically related data arranged in a predetermined format, such as in tables that contain rows and columns. Some database systems can store relatively massive amounts of data, such as databases that provide data warehouses against which on-line analytical processing (OLAP) can be performed.
A goal of OLAP systems is to be able to provide responses to queries from relatively large amounts of data residing in a data warehouse. A data warehouse can include a multi-dimensional relational table that can have a relatively large number of dimensions (also referred to as “attributes”). Providing responses to queries from a large multi-dimensional table in the data warehouse is computationally expensive, and can take a relatively long time.
A multi-dimensional table can be considered a “data cube,” which can be a two-dimensional, three-dimensional, or even higher-dimensional cube. In attempting to improve database system performance, some conventional techniques materialize portions (sub-cubes) of the data cube. Certain queries can be satisfied from the sub-cubes, which can improve the speed at which such queries are processed.
A difficulty faced by developers is the issue of selecting sub-cubes to materialize. Due to storage constraints, it is impractical to store all possible sub-cubes of a data cube. Conventionally, the selection of which sub-cubes to materialize is based on techniques that either involve relatively large computational time (which is impractical for very large databases), or do not provide satisfactory selection of sub-cubes to materialize.